package negocio;

import dal.CategoriaDAL;

import excepciones.AvwException;

import java.util.ArrayList;

/**
 * Clase de la categoria de los articulos en la web
 */
public class CategoriaWeb {
    
    private String cawCodigo;
    private String cawNombre;
    private int cawNivel;
    private CategoriaWeb cawCategoriaPadre;
    private String cawPalabrasClaves;
    private ArrayList cawCategoriaRelacion;
    
    /**
     * Constructor
     */
    public CategoriaWeb() {
    }
    
    /**
     * Constructor
     */
    public CategoriaWeb(String cawCodigo) {
        this.setCawCodigo(cawCodigo);
        cawCategoriaPadre = new CategoriaWeb();
        cawPalabrasClaves = "";
        cawNivel = -1;
        cawCategoriaRelacion = null;
    }
    
    public String getCawCodigo() {
        return cawCodigo;
    }
    
    public void setCawCodigo(String cawCodigo) {
        this.cawCodigo = cawCodigo;
    }
    
    public String getCawNombre() {
        return cawNombre;
    }
    
    public void setCawNombre(String cawNombre) {
        this.cawNombre = cawNombre;
    }
    
    public int getCawNivel() {
        return cawNivel;
    }
    
    public void setCawNivel(int cawNivel) {
        this.cawNivel = cawNivel;
    }
    
    public CategoriaWeb getCawCategoriaPadre() throws AvwException {
        if (cawCategoriaPadre == null){
            return CategoriaDAL.obtenerCategoriaPorHijo(this);
        }
        return cawCategoriaPadre;
    }
    
    public void setCawCategoriaPadre(CategoriaWeb cawCategoriaPadre) {
        this.cawCategoriaPadre = cawCategoriaPadre;
    }
    
    public String getCawPalabrasClaves() {
        return cawPalabrasClaves;
    }
    
    public void setCawPalabrasClaves(String cawPalabrasClaves) {
        this.cawPalabrasClaves = cawPalabrasClaves;
    }
    
    public ArrayList<CategoriaWeb> getCawCategoriaRelacion() throws AvwException {
        if (cawCategoriaRelacion == null){
            return CategoriaDAL.obtenerCategoriasRelacionadas(this);
        }
        return cawCategoriaRelacion;
    }
    
    
    public void setCawCategoriaRelacion(ArrayList<CategoriaWeb> cawCategoriaRelacion) {
        this.cawCategoriaRelacion = cawCategoriaRelacion;
    }
    
    /**
     * @return true si la categoria esta relacionada a algun articulo y false en caso contrario.
     * @param no aplica.
     */
    
    public boolean tieneArticulos() {
        /* Se modifico el metodo pq no debe hacer un if, ademas el metodo anterior no trae un boolean
         * Por Favor comentar el codigo en caso de alguna modificacion.
         */
        try {
            CategoriaDAL.hayArticulosConCategoria(this);
            return true;
        } catch (AvwException e) {
            return false;
        }
    }
    
    /**
     * @param
     * @return
     */
    public void obtenerRamaCategorias() {
    }
    
}
